From ea54ff623e6174bd32ccf36184dad799996df2eb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 20 Apr 2004 13:56:45 +0000 Subject: [PATCH] Don't scroll to cursor position if we already have pending scrolls. 2004-04-20 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_scroll_pages): (gtk_text_view_scroll_hpages): Don't scroll to cursor position if we already have pending scrolls. Bandaid fix for #78513. --- ChangeLog | 3 +++ ChangeLog.pre-2-10 | 3 +++ ChangeLog.pre-2-4 | 3 +++ ChangeLog.pre-2-6 | 3 +++ ChangeLog.pre-2-8 | 3 +++ gtk/gtktextview.c | 28 ++++++++++++++++------------ 6 files changed, 31 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 87a17afa85..e14b21d80f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make sure anchored children get size allocated, even if the layout is valid. (#122323, Andrew E. Makeev) + (gtk_text_view_scroll_pages): + (gtk_text_view_scroll_hpages): Don't scroll to cursor position + if we already have pending scrolls. Bandaid fix for #78513. Mon Apr 19 17:59:17 2004 Owen Taylor diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 87a17afa85..e14b21d80f 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -3,6 +3,9 @@ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make sure anchored children get size allocated, even if the layout is valid. (#122323, Andrew E. Makeev) + (gtk_text_view_scroll_pages): + (gtk_text_view_scroll_hpages): Don't scroll to cursor position + if we already have pending scrolls. Bandaid fix for #78513. Mon Apr 19 17:59:17 2004 Owen Taylor diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 87a17afa85..e14b21d80f 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -3,6 +3,9 @@ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make sure anchored children get size allocated, even if the layout is valid. (#122323, Andrew E. Makeev) + (gtk_text_view_scroll_pages): + (gtk_text_view_scroll_hpages): Don't scroll to cursor position + if we already have pending scrolls. Bandaid fix for #78513. Mon Apr 19 17:59:17 2004 Owen Taylor diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 87a17afa85..e14b21d80f 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -3,6 +3,9 @@ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make sure anchored children get size allocated, even if the layout is valid. (#122323, Andrew E. Makeev) + (gtk_text_view_scroll_pages): + (gtk_text_view_scroll_hpages): Don't scroll to cursor position + if we already have pending scrolls. Bandaid fix for #78513. Mon Apr 19 17:59:17 2004 Owen Taylor diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 87a17afa85..e14b21d80f 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -3,6 +3,9 @@ * gtk/gtktextview.c (gtk_text_view_allocate_children): Make sure anchored children get size allocated, even if the layout is valid. (#122323, Andrew E. Makeev) + (gtk_text_view_scroll_pages): + (gtk_text_view_scroll_hpages): Don't scroll to cursor position + if we already have pending scrolls. Bandaid fix for #78513. Mon Apr 19 17:59:17 2004 Owen Taylor diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 50efb41bdb..4abf72627d 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -4813,17 +4813,19 @@ gtk_text_view_scroll_pages (GtkTextView *text_view, gint y0, y1; g_return_if_fail (text_view->vadjustment != NULL); - - cancel_pending_scroll (text_view); adj = text_view->vadjustment; /* Make sure we start from the current cursor position, even - * if it was offscreen. + * if it was offscreen, but don't queue more scrolls if we're + * already behind. */ - gtk_text_view_scroll_mark_onscreen (text_view, - gtk_text_buffer_get_mark (get_buffer (text_view), - "insert")); + if (text_view->pending_scroll) + cancel_pending_scroll (text_view); + else + gtk_text_view_scroll_mark_onscreen (text_view, + gtk_text_buffer_get_mark (get_buffer (text_view), + "insert")); /* Validate the region that will be brought into view by the cursor motion */ @@ -4897,16 +4899,18 @@ gtk_text_view_scroll_hpages (GtkTextView *text_view, g_return_if_fail (text_view->hadjustment != NULL); - cancel_pending_scroll (text_view); - adj = text_view->hadjustment; /* Make sure we start from the current cursor position, even - * if it was offscreen. + * if it was offscreen, but don't queue more scrolls if we're + * already behind. */ - gtk_text_view_scroll_mark_onscreen (text_view, - gtk_text_buffer_get_mark (get_buffer (text_view), - "insert")); + if (text_view->pending_scroll) + cancel_pending_scroll (text_view); + else + gtk_text_view_scroll_mark_onscreen (text_view, + gtk_text_buffer_get_mark (get_buffer (text_view), + "insert")); /* Validate the line that we're moving within. */ -- 2.30.2